import java.util.*;
public class Main{
    /**
     * 非对称之美
     * @param args
     */
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        char[] s=in.next().toCharArray();
        int n=s.length;
        boolean flg=true;
        for(int i=1;i<n;i++){
            if(s[i-1]!=s[i]){
                flg=false;
                break;
            }
        }
        if(flg){
            System.out.println(0);
        }else{
            if(isRight(s,n)){
                System.out.println(n-1);
            }else{
                System.out.println(n);
            }
        }
    }
    public static boolean isRight(char[] s,int n){
        int left=0;
        int right=n-1;
        while(left<right){
            if(s[left]!=s[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    /**
     * 连续子数组最大和
     * @param args
     */
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int[] arr=new int[n+1];
        int[] dp=new int[n+1];
        int ret=Integer.MIN_VALUE;
        for(int i=1;i<=n;i++){
            arr[i]=in.nextInt();
        }
        for(int i=1;i<=n;i++){
            dp[i]=Math.max(dp[i-1],0)+arr[i];
            ret=Math.max(ret,dp[i]);
        }
        System.out.println(ret);
    }
    /**
     * 对称之美
     * @param args
     */
    public static void main1(String[] args){
        Scanner in=new Scanner(System.in);
        int t=in.nextInt();
        int cnt=0;
        while(cnt<t){
            int n=in.nextInt();
            boolean[][] hash=new boolean[n][26];
            String[] s=new String[n];
            for(int i=0;i<n;i++){
                s[i]=in.next();
                for(int j=0;j<s[i].length();j++){
                    hash[i][s[i].charAt(j)-'a']=true;
                }
            }
            int left=0;
            int right=n-1;
            while(left<right){
                if(!check(hash,left,right)){
                    break;
                }
                left++;
                right--;
            }
            if(left<right){
                System.out.println("No");
            }else{
                System.out.println("Yes");
            }
            cnt++;
        }
    }
    public static boolean check(boolean[][] hash,int left,int right){
        for(int i=0;i<26;i++){
            if(hash[left][i]&&hash[right][i]){
                return true;
            }
        }
        return false;
    }
}